<?php

//将数组中的每项数据及其对应的 16 进制串，两端对齐显示在指定的宽度内
//将数组中的每项数据及其对应的 16 进制串，两端对齐显示在指定的宽度内，若宽度不足，则两项数据直接显示。
$a = ['张三丰', '里  斯', '阿 kit', 'papi 酱', 'Jackson'];
outFormat(35, $a); //利用函数处理数组数据, 输出内容在35个英文字符宽度内

//完善函数功能，将数组中的每项数据及其16进制串，两端对齐显示在指定的宽度内
//数组中的每一项数据中包含的空格要删除掉
//16进制串中每个字节占两个16进制位，英文字符采用大写，各字节间以_分隔
//本文件存储采用utf-8编码
function outFormat(int $width, ?array $a): void
{
    if (is_null($a)) return;
    foreach ($a as $item) {
        $name = str_replace('', '', $item);
        $right = bin2hex($name);
        $right = strtoupper($right);
        $right = chunk_split($right, 2, '_');
        $right = substr($right, 0, -1);
        $rightLength = strlen($right);
        $nameLength = strlen(iconv('utf-8', 'GBK', $name));
        $spaceLength = $width - $nameLength - $rightLength;
        if ($spaceLength < 0) $spaceLength = 0;
        echo $name, str_repeat(' ', $spaceLength), $right, "\n";
    }
//
}
/* 输出内容如下：
张三丰   E5_BC_A0_E4_B8_89_E4_B8_B0
里斯              E9_87_8C_E6_96_AF
阿kit             E9_98_BF_6B_69_74
papi酱         70_61_70_69_E9_85_B1
Jackson        4A_61_63_6B_73_6F_6E
*/
